﻿using System;
using System.ComponentModel;
using System.Windows.Media.Animation;
using Microsoft.Surface.Presentation.Controls;
using WinwiseARDrone.TabletClient.ViewModels;

namespace WinwiseARDrone.TabletClient
{
    /// <summary>
    /// Fenêtre principale de l'application
    /// </summary>
    public partial class TabletteWindowMain : SurfaceWindow
    {
        #region Constructeurs

        /// <summary>
        /// Constructeur de la classe
        /// </summary>
        public TabletteWindowMain()
        {
            // Affectation du DataContext

            this.DataContext = MainViewModel.Instance;

            // Action pour la remise à 0 lors de l'émergency

            MainViewModel.Instance.PropertyChanged += new PropertyChangedEventHandler(this.InstancePropertyChanged);

            // Initialisation XAML

            this.InitializeComponent();
        }

        #endregion

        #region Fonctions protégées

        /// <summary>
        /// Ferme le drone pour l'API
        /// </summary>
        /// <param name="e">Argument de l'appel</param>
        protected override void OnClosing(CancelEventArgs e)
        {
            base.OnClosing(e);
            MainViewModel.Instance.Shutdown();
        }

        #endregion

        #region Fonctions privées

        /// <summary>
        /// On scrute le changement pour l'Emergency
        /// </summary>
        /// <param name="sender">Source de l'appel</param>
        /// <param name="e">Argument de l'appel</param>
        private void InstancePropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            // On lance le storyboard de retour

            if (e.PropertyName == "EmergencyMode" && !MainViewModel.Instance.EmergencyMode)
            {
                this.Dispatcher.BeginInvoke(new Action(delegate
                {
                    this.BeginStoryboard(this.Resources["TableauToStartStoryboard"] as Storyboard);
                }));
            }
        }

        #endregion
    }
}
